home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / checkbox / registries / cpuinfo.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-11-11  |  4KB  |  165 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os
  5. import posixpath
  6. from checkbox.lib.cache import cache
  7. from checkbox.lib.conversion import string_to_type
  8. from checkbox.properties import Path
  9. from checkbox.registries.filename import FilenameRegistry
  10.  
  11. def cpuinfo_to_processor(uname, cpuinfo):
  12.     processor = {
  13.         'platform': uname,
  14.         'count': 1,
  15.         'type': uname,
  16.         'model': uname,
  17.         'model_number': '',
  18.         'model_version': '',
  19.         'model_revision': '',
  20.         'cache': 0,
  21.         'bogomips': 0,
  22.         'speed': -1,
  23.         'other': '' }
  24.     platform_to_conversion = {
  25.         ('i386', 'i486', 'i586', 'i686', 'x86_64'): {
  26.             'type': 'vendor_id',
  27.             'model': 'model name',
  28.             'model_number': 'cpu family',
  29.             'model_version': 'model',
  30.             'model_revision': 'stepping',
  31.             'cache': 'cache size',
  32.             'other': 'flags',
  33.             'speed': 'cpu mhz' },
  34.         ('alpha', 'alphaev6'): {
  35.             'count': 'cpus detected',
  36.             'type': 'cpu',
  37.             'model': 'cpu model',
  38.             'model_number': 'cpu variation',
  39.             'model_version': ('system type', 'system variation'),
  40.             'model_revision': 'cpu revision',
  41.             'other': 'platform string',
  42.             'speed': 'cycle frequency [Hz]' },
  43.         ('ia64',): {
  44.             'type': 'vendor',
  45.             'model': 'family',
  46.             'model_version': 'archrev',
  47.             'model_revision': 'revision',
  48.             'other': 'features',
  49.             'speed': 'cpu mhz' },
  50.         ('ppc64', 'ppc'): {
  51.             'type': 'platform',
  52.             'model': 'cpu',
  53.             'model_version': 'revision',
  54.             'vendor': 'machine',
  55.             'speed': 'clock' },
  56.         ('sparc64', 'sparc'): {
  57.             'count': 'ncpus probed',
  58.             'type': 'type',
  59.             'model': 'cpu',
  60.             'model_version': 'type',
  61.             'speed': 'bogomips' } }
  62.     processor['count'] = cpuinfo.get('count', 1)
  63.     processor['bogomips'] = int(round(float(cpuinfo.get('bogomips', '0.0'))))
  64.     for platform, conversion in platform_to_conversion.items():
  65.         if uname in platform:
  66.             for pkey, ckey in conversion.items():
  67.                 if isinstance(ckey, (list, tuple)):
  68.                     processor[pkey] = []([ cpuinfo[k] for k in ckey ])
  69.                     continue
  70.                 []
  71.                 if ckey in cpuinfo:
  72.                     processor[pkey] = cpuinfo[ckey]
  73.                     continue
  74.                 '/'.join
  75.             
  76.     
  77.     if uname[0] == 'i' and uname[-2:] == '86':
  78.         processor['platform'] = 'i386'
  79.     elif uname[:5] == 'alpha':
  80.         processor['platform'] = 'alpha'
  81.     elif uname[:5] == 'sparc':
  82.         processor['vendor'] = 'sun'
  83.     
  84.     if processor['cache']:
  85.         processor['cache'] = string_to_type(processor['cache'])
  86.     
  87.     
  88.     try:
  89.         if uname[:5] == 'alpha':
  90.             speed = processor['speed'].split()[0]
  91.             processor['speed'] = int(round(float(speed))) / 1000000
  92.         elif uname[:5] == 'sparc':
  93.             speed = processor['speed']
  94.             processor['speed'] = int(round(float(speed))) / 2
  95.         elif uname[:3] == 'ppc':
  96.             speed = processor['speed'][:-3]
  97.         else:
  98.             speed = processor['speed']
  99.         processor['speed'] = int(round(float(speed)) - 1)
  100.     except ValueError:
  101.         processor['speed'] = -1
  102.  
  103.     
  104.     try:
  105.         processor['count'] = int(processor['count'])
  106.     except ValueError:
  107.         processor['count'] = 1
  108.  
  109.     if processor['count'] == 0:
  110.         processor['count'] = 1
  111.     
  112.     return processor
  113.  
  114.  
  115. class CpuinfoRegistry(FilenameRegistry):
  116.     '''Registry for cpuinfo information.
  117.  
  118.     Each item contained in this registry consists of the processor number
  119.     as key and the corresponding processor registry as value.
  120.     '''
  121.     filename = Path(default = '/proc/cpuinfo')
  122.     frequency_filename = Path(default = '/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq')
  123.     
  124.     def _get_attributes(self):
  125.         count = 0
  126.         attributes = { }
  127.         for block in self.split('\n\n'):
  128.             if not block:
  129.                 continue
  130.             
  131.             count += 1
  132.             if count > 1:
  133.                 continue
  134.             
  135.             for line in block.split('\n'):
  136.                 if not line:
  137.                     continue
  138.                 
  139.                 (key, value) = line.split(':')
  140.                 key = key.strip()
  141.                 value = value.strip()
  142.                 if key.endswith('Bogo'):
  143.                     key = 'bogomips'
  144.                 
  145.                 attributes[key.lower()] = value
  146.             
  147.         
  148.         attributes['count'] = count
  149.         return attributes
  150.  
  151.     
  152.     def items(self):
  153.         uname = os.uname()[4].lower()
  154.         attributes = self._get_attributes()
  155.         processor = cpuinfo_to_processor(uname, attributes)
  156.         if posixpath.exists(self.frequency_filename):
  157.             speed = open(self.frequency_filename).read().strip()
  158.             processor['speed'] = int(speed) / 1000
  159.         
  160.         return processor.items()
  161.  
  162.     items = cache(items)
  163.  
  164. factory = CpuinfoRegistry
  165.